Anteprima
Vedrai una selezione di 3 pagine su 8
Esercizi e risoluzione sul linguaggio di programmazione R Pag. 1 Esercizi e risoluzione sul linguaggio di programmazione R Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
Esercizi e risoluzione sul linguaggio di programmazione R Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Ci possono essere due possibili soluzioni per questo primo punto:

1)​ creo una funzione

fun_dens_norm<-function(x,mu=1,sigma2=2){

y=(1/(sqrt(2*pi*sigma2))*exp(-1/(2*sigma2)*(x-mu)^2))

return(y)

} <- 1

fun_dens_norm(-1)mu

2)​alternativa

mu<-1

sigma2 <- 2

x <- -1

f_x <- (2*pi*sigma2)^(-1/2)*exp(-1/(2*sigma2)*(x-mu)^2); f_x

᛫ Nel secondo punto invece ci viene chiesto di rappresentare graficamente la

densità di X nel range (-5,5)

curve(fun_dens_norm(x),xlim = c(-5,5),

main="funzione di densità della normale",

ylab="f(x)",xlab="x")

᛫ il terzo punto mi chiede di sovraimporre al grafico una linea verticale e una

orizzontale in -1 e in f(-1)

fun_dens_norm(-1)

abline(v=-1,h=fun_dens_norm(-1),col="red",lty=2)

points(-1,fun_dens_norm(-1),pch=20,col="red")

ESERCIZIO 1.2

᛫ Il primo punto mi chiede di sommare i primi 600 numeri

n<-600

x<-1:n

sum(x)

᛫ Il secondo punto mi chiede di sommare i primi 600 numeri seguendo la

formula di Gauss

n<-600

somma<-n*(n+1)/2;somma

ESERCIZIO 1.3

᛫ Il primo punto mi chiede di estrarre gli elementi in posizione pari del vettore v

che contiene i numeri pari da 1 a 250 e si calcoli la loro somma.

Anche qui abbiamo due alternative:

1)v<-1:250

pari<-v[seq(0,250,2)]

sum(pari)

2)v <- 1:250

sum(v[2*(1:floor(length(v)/2))])

᛫ Il secondo punto mi chiede di determinare il numero di interi tra 1 e 250 che

risultano maggiori di 97 e dispari.

v<-1:250

booleani<-v>97 & (v%%2 == 1) #Se il numero è dispari, il resto è 1, altrimenti è 0.

sum(booleani)

ESERCIZIO 1.4

᛫ Il primo punto mi chiede di scrivere una funzione che, senza utilizzare la

funzione t(), restituisca la trasposta di una matrice mat ricevuta come

argomento.

che cos’è però la trasposta di una matrice?

La matrice trasposta è una trasformazione di una matrice che si ottiene

scambiando le sue righe con le sue colonne. Se hai una matrice T

A di dimensione m×n (con m righe e n colonne), la matrice trasposta A avrà

dimensione ×

R I S O L U Z I O N E

my_trasp<-function(mat){

ncol_mat<-ncol(mat)

nrow_mat<-nrow(mat)

trasp<-matrix(NA,ncol=nrow_mat,nrow = ncol_mat)

for(r in 1:nrow_mat){

trasp[,r]<-mat[r,]

}

return(trasp)

}

Nel ciclo for avviene la trasposizione vera e propria:Il ciclo scorre ogni riga della

matrice originale (mat), indicata da r, che varia da 1 a nrow_mat (numero di

righe della matrice originale).Ad ogni iterazione: mat[r, ] estrae la riga r della

matrice originale. trasp[, r] assegna questa riga alla colonna r della matrice trasp.

In pratica, ogni riga della matrice originale diventa una colonna nella matrice

trasposta.

᛫ Il primo punto mi chiede di fare un esempio

A<-matrix(c(1:12),nrow = 2,ncol=3)

A

my_trasp(A)

ESERCIZIO 1.5

᛫ Il primo punto mi chiede di scrivere una funzione che permetta di calcolare il

prodotto scalare tra due vettori di stessa lunghezza. Qualora i due vettori dati in

input non dovessero avere la stessa lunghezza, la funzione deve portare ad un

messaggio di errore.

prod_scal <- function(a,b){

if(length(a) != length(b)){

print("Errore: i due vettori devono avere la stessa dimensione")

} else {

somma <- 0

for(i in 1:length(a)){

somma <- somma + (a[i]*b[i])

}

return(somma)

}

}

a <- c(10, 2, 7)

b <- 4:6

c <- c(1, 1, 1, 1)

prod_scal(a, b)

prod_scal(a, c)

ESERCIZIO 1.6

᛫ una funzione che riceva come

Il primo punto mi chiede di scrivere

argomento un numero intero e restituisca se il numero è primo e

TRUE FALSE

altrimenti

is.primo <- function(x){

divisori <- 2:(x-1)

if(any(x%%divisori == 0)) {

return(FALSE)

} else {

return(TRUE)

}

}

is.primo(9)

is.primo(13)

ESERCIZIO 1.7

᛫ Il primo punto mi chiede di scrivere una funzione che riceva come argomenti

voti ed un vettore CFU. La funzione deve restituire una lista, avente

un vettore

come primo elemento la media aritmetica dei voti e come secondo elemento la

media aritmetica ponderata degli stessi.

medie <- function(voti, CFU){

output <- list()

output$media <- sum(voti)/length(voti)

output$media_ponderata <- sum(voti*CFU)/sum(CFU)

return(output)

} Il secondo punto mi chiede di utilizzare la funzione appena scritta per calcolare

le medie dei propri voti, verificando la correttezza dei risultati tramite il proprio

libretto online.

miei_voti2 <- c(27, 30, 18, 25, 30, 23, 30)

miei_CFU2 <- c(6, 9, 9, 6, 9, 6, 6)

medie(miei_voti2, miei_CFU2)

ESERCIZIO 1.8

᛫ Il primo punto mi chiede di scrivere una funzione che restituisca il vettore

standardizzato.

x <- seq(5, 271.2, by=.86)

stand <- function(v) {

s <- (v-mean(v))/sd(v)

return(s)

}

s <- stand(x)

c(mean(s), sd(s))

Il secondo punto mi chiede di scrivere una funzione che normalizzi il vettore

(cioè che scali il vettore in modo tale che i suoi elementi assumano valori in

[0,1])

C O D I C E

x <- seq(5, 271.2, by=.86)

norm <- function(v) {

n <- (v-min(v))/(max(v)-min(v))

return(n)

}

n <- norm(x)

c(min(n), max(n))

ESERCIZIO 1.9

᛫ Il primo punto mi chiede di scrivere una funzione che riceva due interi n

e k e restituisca una tavola pitagorica di dimensione nxk

.pitag <- function(n, k){

out <- matrix(NA, nrow=n, ncol=k)

for(i in 1:n){

for(j in 1:k){

out[i,j] <- i*j

}

}

return(out)

}

pitag(5,4)

Dettagli
Publisher
A.A. 2024-2025
8 pagine
SSD Scienze economiche e statistiche SECS-S/01 Statistica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ibty_05 di informazioni apprese con la frequenza delle lezioni di Analisi statistica multivariata e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof Ascari Roberto.